//
//  BBDistortionMap.h
//  BBTouch
//
//  Created by ben smith on 8/12/08.
//  This file is part of BBTouch.
//
//  BBTouch is free software: you can redistribute it and/or modify
//  it under the terms of the GNU Lesser General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.

//  BBTouch is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU Lesser General Public License for more details.

//  You should have received a copy of the GNU Lesser General Public License
//  along with BBTouch.  If not, see <http://www.gnu.org/licenses/>.
// 
//  Copyright 2008 Ben Britten Smith ben@benbritten.com .
//

#import <Cocoa/Cocoa.h>

// this object takes two distortion meshes and a rectangle
// and allows you to put in points from the source and
// and get out their equivalent from the destination

@class BBDistortionMesh;

@interface BBDistortionMap : NSObject {
	BBDistortionMesh * sourceMesh;
	BBDistortionMesh * destinationMesh;
	NSMutableArray * map;
	NSRect mapFrame;
	BOOL dirty;
}

@property (retain) BBDistortionMesh * sourceMesh;
@property (retain) BBDistortionMesh * destinationMesh;
@property (assign) NSRect mapFrame;
@property (assign) BOOL dirty;

- (BOOL)_calculateDestinationPoint:(NSPoint*)destPoint fromSourcePoint:(NSPoint)p;
- (BOOL)normalizedDestinationPoint:(NSPoint*)destPoint fromSourcePoint:(NSPoint)p;
- (BOOL)destinationPoint:(NSPoint*)destPoint fromSourcePoint:(NSPoint)p;
- (NSDictionary*)propertyDictionary;
- (id)initWithCoder:(NSCoder *)coder;
- (void)calculateMap;
- (void)encodeWithCoder:(NSCoder *)coder;

// 6 methods



@end
